<?php
/**
 * @package pagina
 * @author Alvaro Garcia
 * @license GPL3
 */

class Foto
{
	private $id_usuario;
	private $nombre_propietario;
	private $n_siguiente;
	private $n_anterior;
	private $n_foto;
	private $nombre;
	private $titulo;
	private $fecha;
	private $extension;
	
	public function getCantidadPaginasComentarios()
	{
		$sql = "SELECT count(*) FROM comentarios WHERE id_usuario = ".$this->id_usuario." and n_foto = ".$this->n_foto;
		$res = mysql_query($sql);
		$fila = mysql_fetch_array($res);
		return $fila[0];
	}
	
	public function denunciar($id_denunciante,$motivo)
	{
			$sql="INSERT INTO denuncias_fotos (id_usuario,n_foto,nombre_foto,id_denunciante,motivo)
			VALUES (".$this->id_usuario.",".$this->n_foto.",'".$this->nombre."',".$_SESSION['usuario']->getId().",'".$motivo."')";
			mysql_query($sql);
			
			$sql="UPDATE fotos SET nombre_foto=null WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto;
			mysql_query($sql);
			
			Sistema::enviarEmail("contacto@wixet.com","Foto denuncidada","Se ha denunciado la foto ".$this->id_usuario.",".$this->n_foto." con el motivo \"".$motivo."\"");

	}
	
	public function restaurar()
	{
		$sql="select nombre_foto,id_denunciante,motivo
		FROM denuncias_foto WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto;
		$res = mysql_query($sql);
		$denuncia = array();
		while($fila = mysql_fetch_array($res))
		{
			$denuncia['nombre_foto'] = $fila['nombre_foto']; 	
			$denuncia['id_denunciante'] = $fila['id_denunciante']; 	
			$denuncia['motivo'] = $fila['motivo']; 	
		}
			
		$denunciante = new Usuario();
		$denunciante->cargarUsuarioConId($denuncia['id_denunciante']);
		
		$denunciado = new Usuario();
		$denunciado->cargarUsuarioConId($this->id_usuario);
		
		$sql="UPDATE fotos SET nombre_foto='".$denuncia['nombre_foto']."' WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto;
		mysql_query($sql);
		
		Sistema::enviarEmail($denunciante->getEmail(),"Denuncia de foto rechazada","Tu denuncia sobre esta <a href='http://www.wixet.com/#foto&uuid=".$this->id_usuario."&nFoto=".$this->n_foto."'>foto</a> cuyo motivo es \"".$motivo."\" ha sido rechazada. Si tienes alguna pregunta o problema haznoslo saber respondiendo a este correo.<br>Un saludo");
		Sistema::enviarEmail($denunciado->getEmail(),"Foto restaurada","La denuncia sobre tu foto <a href='http://www.wixet.com/#foto&uuid=".$this->id_usuario."&nFoto=".$this->n_foto."'>foto</a> cuyo motivo era \"".$motivo."\" ha sido rechazada. Ya puedes volver a ver tu foto.<br>Un saludo");
		
			
			

	}
	
	//Estas dos funciones son especiales porque permite a cualquier ver esas miniaturas
	//Solo tienen miniaturas las principales asi que no hay problema
	public function cargarFotoMiniatura($id_usuario,$n_foto)
	{

		$sql="select nombre_foto,i.extension as extension
		from fotos f
		join extensiones_imagenes i on (f.extension=i.id_extension)
		where id_usuario=$id_usuario and n_foto=$n_foto";
		
		//echo $sql;
		$foto=mysql_fetch_array(mysql_query($sql),MYSQL_ASSOC);
		echo mysql_error();
		$this->id_usuario=$id_usuario;
		$this->n_foto=$n_foto;
		$this->nombre=$foto['nombre_foto'];
		$this->extension=$foto['extension'];
		
		if($this->nombre=="")
		{
			$this->nombre=$foto['nombre_foto']="sinfoto";
			$this->extension=$foto['extension']="png";
		}
	}
	
	public function cargarFotoLista($id_usuario,$n_foto)
	{

		$sql="select nombre_foto,i.extension as extension
		from fotos f
		join extensiones_imagenes i on (f.extension=i.id_extension)
		where id_usuario=$id_usuario and n_foto=$n_foto";
		
		//echo $sql;
		$foto=mysql_fetch_array(mysql_query($sql),MYSQL_ASSOC);
		echo mysql_error();
		$this->id_usuario=$id_usuario;
		$this->n_foto=$n_foto;
		$this->nombre=$foto['nombre_foto'];
		$this->extension=$foto['extension'];
		
		if($this->nombre=="")
		{
			$this->nombre=$foto['nombre_foto']="sinfoto";
			$this->extension=$foto['extension']="png";
		}
	}
	
	public function cargarFoto($id_usuario,$n_foto)
	{
		$sesion = new Sesion();
		if($sesion->getUsuario()->esAmigo($id_usuario))
		{
			$sql="select nombre_foto,titulo_foto,fecha_foto,nombre,apellido1,apellido2,i.extension as extension,
				(SELECT n_foto FROM fotos
				 WHERE n_foto > ".$n_foto." and id_usuario = ".$id_usuario."
				 LIMIT 1) as n_siguiente,
				 (SELECT MAX(n_foto) FROM fotos
					WHERE n_foto < ".$n_foto." and id_usuario = ".$id_usuario.") as n_anterior
			from fotos f
			join usuarios using (id_usuario) 
			join extensiones_imagenes i on (f.extension=id_extension)
			where id_usuario=$id_usuario and n_foto=$n_foto";
			
			//echo $sql;
			$foto=mysql_fetch_array(mysql_query($sql),MYSQL_ASSOC);
			$this->id_usuario=$id_usuario;
			$this->n_foto=$n_foto;
			$this->nombre=$foto['nombre_foto'];
			$this->extension=$foto['extension'];
			$this->x=$foto['pos_x'];
			$this->y=$foto['pos_y'];
			$this->ancho=$foto['ancho'];
			$this->alto=$foto['alto'];
			$this->texto=$foto['texto'];
			
			//if($foto['siguiente']=="")
			//	$this->siguiente=$this->n_foto;
			//else
				$this->n_siguiente=$foto['n_siguiente'];
				
			$this->n_anterior=$foto['n_anterior'];
			
			if($this->nombre!="")
			{
				$this->titulo=$foto['titulo_foto'];
				$this->fecha=$foto['fecha_foto'];
				$this->nombre_propietario=$foto['nombre']." ".$foto['apellido1']." ".$foto['apellido2'];
			}
			else
			{
				$this->nombre=$foto['nombre_foto']="sinfoto";
				$this->extension=$foto['extension']="png";
			}
		}
	}
	
	public function cargarFotoConId($idUsuario,$nFoto)
	{
		$this->cargarFoto($idUsuario,$nFoto);
	}
	
	public function getNombrePropietario()
	{
		return $this->nombre_propietario;
	}
	public function getFecha()
	{
		return $this->fecha;
	}
	
	public function getExtension()
	{
		return $this->extension;
	}
	
	public function setExtension($var)
	{
		$this->extension=$var;
	}
	
	public function getNSiguiente()
	{
		return $this->n_siguiente;
	}
	
	public function getNAnterior()
	{
		return $this->n_anterior;
	}
	
	public function getAparicionesPara($usuario)
	{
		//La interseccion entre amigos totales y amigos que no estan etiquetados
		$sql="SELECT id_amigo
			   FROM amigos
			   WHERE id_usuario =".$usuario->getId()." AND id_amigo NOT IN 
													(SELECT id_aparicion 
													 FROM apariciones 
													 WHERE id_usuario = ".$this->id_usuario." AND n_foto=".$this->n_foto.")";
		$res = mysql_query($sql);
		$usuarios = array();
		while($fila = mysql_fetch_array($res,MYSQL_NUM))
		{
			$usuarioFoto = new Usuario();
			$usuarioFoto->cargarUsuarioConId($fila[0]);
			$usuarioFin['nombre'] = $usuarioFoto->getNombre()." ".$usuarioFoto->getApellido1()." ".$usuarioFoto->getApellido2();
			$usuarioFin['id'] = $usuarioFoto->getId();
			
			$usuarios[] = $usuarioFin;
		}
		return $usuarios;
	}
	
	public function getApariciones()
	{
		$apariciones=array();
		$sql='select apa.id_usuario,apa.nombre,apa.apellido1,apa.apellido2,eti.id_usuario,eti.nombre,eti.apellido1,eti.apellido2,posicion_x,posicion_y,ancho,alto,texto
		FROM apariciones a
		join usuarios eti on (etiquetado_por=eti.id_usuario)
                join usuarios apa on (id_aparicion=apa.id_usuario)
where a.id_usuario='.$this->id_usuario.' and a.n_foto='.$this->n_foto;	
		$res=mysql_query($sql);
		$indice=0;
		while($aparicion=mysql_fetch_array($res,MYSQL_NUM))
		{
			$apariciones[$indice]=new Aparicion();
			$apariciones[$indice]->setIdUsuarioFoto($this->id_usuario);
			$apariciones[$indice]->setNFoto($this->n_foto);
			$apariciones[$indice]->setIdUsuarioAparicion($aparicion[0]);
			$apariciones[$indice]->setAparicionNombre($aparicion[1]);
			$apariciones[$indice]->setAparicionApellido1($aparicion[2]);
			$apariciones[$indice]->setAparicionApellido2($aparicion[3]);
	
			$apariciones[$indice]->setIdUsuarioEtiquetador($aparicion[4]);
			$apariciones[$indice]->setEtiquetadorNombre($aparicion[5]);
			$apariciones[$indice]->setEtiquetadorApellido1($aparicion[6]);
			$apariciones[$indice]->setEtiquetadorApellido2($aparicion[7]);
	
			$apariciones[$indice]->setPosX($aparicion[8]);
			$apariciones[$indice]->setPosY($aparicion[9]);
			
			$apariciones[$indice]->setAncho($aparicion[10]);
			$apariciones[$indice]->setAlto($aparicion[11]);
			$apariciones[$indice]->setTexto($aparicion[12]);
			$indice++;
		}
		return $apariciones;
	}
	
	public function getIdUsuario()
	{
		return $this->id_usuario;	
	}
	
	public function getNFoto()
	{
		return $this->n_foto;	
	}
	public function getNombre()
	{
		return $this->nombre;	
	}
	
	public function setNombre($var)
	{
		$this->nombre=$var;
	}
	public function getTitulo()
	{
		return $this->titulo;
	}
	
	public function eliminar()
	{
		$sql="SELECT count(*) FROM denuncias_fotos WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto;
		$res = mysql_query($sql);
		$fila = mysql_fetch_array($res);
		if($fila[0] == 0)
		{
			$sql="UPDATE usuarios SET id_foto_principal=null and n_foto_principal=null WHERE id_foto_principal=".$this->id_usuario." and n_foto_principal=".$this->n_foto;
			mysql_query($sql);
			$sql="DELETE FROM fotos WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto;
			mysql_query($sql);
			@unlink("imagenes/inicio/".$this->nombre.".".$this->extension);
			@unlink("imagenes/lista/".$this->nombre.".".$this->extension);
			@unlink("imagenes/miniaturas/".$this->nombre.".".$this->extension);
			@unlink("imagenes/perfiles/".$this->nombre.".".$this->extension);
			@unlink("imagenes/thumbnails/".$this->nombre.".".$this->extension);
			@unlink("imagenes/".$this->nombre.".".$this->extension);
			return true;
		} else return false; //No se puede borrar una foto bajo denuncia
	}
	
	public function desetiquetar($idAparicion)
	{
		$sql="DELETE FROM apariciones WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto." and id_aparicion=".$idAparicion;
		mysql_query($sql);
	}
	
	public function etiquetar($idAparicion,$x,$y,$ancho,$alto,$texto)
	{
		mysql_query("call insertar_aparicion(".$this->id_usuario.",".$this->n_foto.",".$idAparicion.",".$_SESSION['usuario']->getId().",".$x.",".$y.",".$ancho.",".$alto.",'".$texto."')");
	}
	
	public function etiquetado($idAparicion)
	{
		$sql="SELECT count(*) from apariciones WHERE id_usuario=".$this->id_usuario." and n_foto=".$this->n_foto." and id_aparicion=".$idAparicion;
		$res=mysql_query($sql);
		$fila=mysql_fetch_array($res);
		if($fila[0]==0)
			return false;
		else
			return true;
	}
	
	public function getUltimosComentarios()
	{
		$comentario = null;
		$comentarios = array();
		$sql = "SELECT DISTINCT n_comentario
				FROM ultimos_comentarios
				WHERE id_usuario = ".$this->id_usuario." AND n_foto = ".$this->n_foto;
		$res = mysql_query($sql);
		
		while($fila = mysql_fetch_array($res,MYSQL_NUM))
		{
			$comentario = new Comentario();
			$comentario->cargarComentarioConId($this->id_usuario,$this->n_foto,$fila[0]);
			$comentarios[] = $comentario;
		}
		return $comentarios;
	}
	
	public function getUltimasApariciones()
	{
		$aparicion = null;
		$apariciones = array();
		$sql = "SELECT DISTINCT id_aparicion
				FROM ultimos_apariciones
				WHERE id_usuario = ".$this->id_usuario." AND n_foto = ".$this->n_foto;
		$res = mysql_query($sql);
		
		while($fila = mysql_fetch_array($res,MYSQL_NUM))
		{
			$aparicion = new Aparicion();
			$aparicion->cargarAparicionConId($this->id_usuario,$this->n_foto,$fila[0]);
			$apariciones[] = $aparicion;
		}
		return $apariciones;
	}
	
	public function ultimaActividad()
	{
		$sql = "SELECT hace
				FROM ultimos_cambios_fotos
				WHERE id_usuario = ".$this->id_usuario." AND n_foto=".$this->n_foto;
		/*$sql = "(
					SELECT hace FROM ultimos_apariciones
					WHERE id_usuario = ".$this->id_usuario." and n_foto = ".$this->n_foto."
				)
				UNION
				(
					SELECT hace FROM ultimos_comentarios
					WHERE id_usuario = ".$this->id_usuario." and n_foto = ".$this->n_foto."
				)
				ORDER BY hace DESC
				LIMIT 1";*/
		$res = mysql_query($sql);

		$fila = mysql_fetch_array($res,MYSQL_NUM);
		return $fila[0];
	}
	
	public function comentar($usuario,$mensaje)
	{
		$sql="call comentar_foto (".$usuario->getId().",".$this->id_usuario." ,".$this->n_foto.", '".$mensaje."', null)";
		mysql_query($sql);
	}

}
?>
